package org.maodian.shindigbook.social.facebook.spi;

import java.util.Set;
import java.util.concurrent.Future;

import org.apache.shindig.auth.SecurityToken;
import org.apache.shindig.protocol.ProtocolException;
import org.apache.shindig.protocol.RestfulCollection;
import org.apache.shindig.social.opensocial.spi.CollectionOptions;
import org.apache.shindig.social.opensocial.spi.GroupId;
import org.apache.shindig.social.opensocial.spi.UserId;
import org.maodian.shindigbook.social.facebook.model.Album;

/**
 * Defines method for creating, retrieving, updating & deleting Facebook Album 
 * @author Pigwen
 *
 */
public interface AlbumService {

  /**
   * Retrieves facebook albums for the given user and group.
   *
   * @param userIds  Identifies the users to retrieve albums from
   * @param groupId  Identifies the group to retrieve albums from
   * @param appId    Identifies the application to retrieve albums from
   * @param fields The fields to return.  Empty set implies all
   * @param options  The sorting/filtering/pagination options
   * @param token    A valid SecurityToken
   *
   * @return a response item with the requested albums
   */
 Future<RestfulCollection<Album>> getAlbums(Set<UserId> userIds,
                                            GroupId groupId, String appId, Set<String> fields,
                                            CollectionOptions options, SecurityToken token)
     throws ProtocolException;
}
